Julia 数
阐述
Number 抽象类型及其子类型。
zero() 和 one() 返回对应类型的零和一。
实数
整数
Integer <: Real 抽象类型及其子类型。Integer 具有两个抽象子类型 Signed 和 Unsigned,分别用于定义有符号和无符号类型。
Signed的子类型:Int8, 16, 32, 64, 128Unsigned的子类型:Bool,UInt8, 16, 32, 64, 128- 别名
Int/UInt作为操作系统所指定的原生整数类型
整数运算上溢后会发生取模操作
有理数
有理数类型由 Rational{T<:Integer} <: Real 参数类型定义,参数为整数类型并且属于 Real 的子类型。
有理数创建时会自动约分,并且使得分母非负。
有理数可以转换为浮点数,并且保持下式成立:float(a//b) == a/b。
浮点数
浮点数类型由 AbstractFloat 抽象类型及其子类型定义。
- 基本类型:
Float16, Float32, Float64 BigFloat
复数
复数类型由 Complex{T<:Real} <: Number Julia 参数类型定义。可以用 complex(a, b) 的形式构造。
实例
字面量
整数
- 无前缀字面量为有符号整数,类型为
Int32或Int64,- 64 位操作系统上永远是
Int64 - 32 位操作系统上按实际大小选择
- 64 位操作系统上永远是
- 用
0x, 0o, 0b开头的字面量为无符号整数,类型取决于将该字面量的第一位换成 1 的大小所需要的存储空间- 如
0x01是一个UInt8,而0x0001是一个UInt16
- 如
- 带负号的无符号整数视为二进制补码
有理数
Rational{Int} 字面量可以用形如 2//3 的表达式表示。
im表示虚数单位- 可以用
1 + 2im的形式表示字面量
浮点数
- 带小数点的数定义
Float64 - 科学计数法(e 或 E)定义
Float64 - 科学计数法(f)定义
Float32 - 以 2 为底的十六进制科学计数法(p)定义
Float64,如0x1.8p3 - 下划线可以用于分隔数字
特殊浮点数值:
- 各类型的正 0 和负 0:相等但
bitstring表示不同 - 各类型的
Inf/Inf16/Inf32:大于所有的有限浮点数-Inf/-Inf16/-Inf32:小于所有的有限浮点数NaN/NaN16/NaN32:不等于所有浮点数,包括它自身
- 机器 epsilon:
eps(T)给出类型T中 1 和下一个浮点数的距离,而eps(x)给出x和下一个浮点数的距离
性质
转换
指在两种 <:Number 的类型之间进行转换。有三种方式:
- 用 Julia 构造函数
T(x)或 Julia 转换convert(T, x)- 对浮点数可能用正负无穷表示
- 对整数如果表示不了则抛出错误
- 当目标类型是整数时,用
x % T- 若
T是一个 位整数类型,转换为模 同余的值
- 若
- 当目标类型是整数时,用
round(T, x)
Int8(127)
Int8(128) # error
Int8(3.14) # error
128 % Int8 # -128
round(Int8, 127.6) # error
相关内容
参考文献
- 有些函数输入实数时返回实数,输入复数时返回复数,如
sqrt;